package interpreter

// 这个模式比较复杂，这里先只搭个架子

// AbstractExpression 抽象表达式
type AbstractExpression interface {
	// Interpret 解释的操作
	Interpret(ctx *Context)
}

// TerminalExpression 终结符表达式
type TerminalExpression struct {
}

func (t *TerminalExpression) interpret(ctx Context) {
	// 实现与语法规则中的终结符相关联的解释操作
}

// NonTerminalExpression 非终结符表达式
type NonTerminalExpression struct {
}

func (t *NonTerminalExpression) interpret(ctx Context) {
	// 实现与语法规则中的非终结符相关联的解释操作
}

// Context 上下文，包含解析器之外的一些全局信息
type Context struct {
}

// Client 使用解释器的客户
type Client struct {
	// 主要按照语法规则对特定的句子构建抽象语法树
	// 然后调用解释操作
}
